Skip to content

improvement(docs): ui/ux cleanup#4016

Merged
emir-karabeg merged 4 commits intostagingfrom
improvement/docs
Apr 7, 2026
Merged

improvement(docs): ui/ux cleanup#4016
emir-karabeg merged 4 commits intostagingfrom
improvement/docs

Conversation

@emir-karabeg
Copy link
Copy Markdown
Collaborator

@emir-karabeg emir-karabeg commented Apr 7, 2026

Summary

Overhaul docs site UI/UX: new page footer component, cleaner sidebar spacing, white light-mode background, fixed sidebar divider, and refined typography. Landing page and blog SEO/GEO optimization: proper OG locale mapping, structured data cleanup, updated meta tags, and new llms.txt. Landing page UI refresh: rebuilt hero, landing preview components, templates section, footer CTA, and navbar styling. Add Cursor list_artifacts and download_artifact tools with API route and block config updates. Support multiple response blocks in workflow execution engine with tests. Align skeleton loading states across all settings tabs to match actual page layouts.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Other: UI/UX improvement

Testing

Tested manually

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

Screenshots/Videos

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Apr 7, 2026 6:01pm

Request Review

@cursor
Copy link
Copy Markdown

cursor bot commented Apr 7, 2026

PR Summary

Medium Risk
Moderate risk due to large, highly specific CSS/layout overrides and navigation component refactors that could regress docs rendering across breakpoints and OpenAPI pages; no sensitive auth/data logic changes.

Overview
Revamps the docs site UI/UX and navigation. Introduces a reusable PageFooter (prev/next + social links) and wires it into both MDX and OpenAPI pages, while restyling page header spacing and the inline prev/next arrow buttons.

Overhauls layout styling via global.css. Switches light mode to a pure white background, adds a fixed sidebar divider and new spacing variables, removes/neutralizes shadows, and reworks sidebar/TOC typography and interaction styles (including removing the sidebar scroll fade mask and making OpenAPI cards/panels more transparent).

SEO/i18n + crawlability adjustments. Adds an explicit OpenGraph locale map per language, simplifies JSON-LD output (inline <script> and drops WebSite structured data), updates sitemap generation to revalidate hourly and include x-default hreflang (while removing lastmod/changefreq), and tweaks robots.txt generation to be stable.

Reviewed by Cursor Bugbot for commit 69d2d19. Configure here.

@emir-karabeg emir-karabeg changed the base branch from main to staging April 7, 2026 17:45
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Apr 7, 2026

Greptile Summary

This PR delivers a broad UI/UX cleanup across the docs site and landing/blog app: new docs page-footer, refined sidebar spacing and design tokens, white light-mode background, Fumadocs CSS variable overrides, rebuilt blog post hero layout, SEO/GEO metadata improvements (@graph JSON-LD, sitemap priorities, RSS enhancements), and a new llms.txt. The changes are well-scoped and purposeful.

Notable issues found:

  • buildBlogJsonLd() in apps/sim/lib/blog/seo.ts is exported but never imported anywhere — dead code that can be removed.
  • wordCount is added to BlogFrontmatterSchema in schema.ts, but the value is always computed from content in registry.ts and the frontmatter-parsed value is never used, making the schema field misleading.
  • proficiencyLevel: 'Beginner' is hardcoded for every TechArticle JSON-LD object, which is inaccurate for the majority of technical posts.
  • themeColor in apps/docs/app/layout.tsx was simplified to the single value '#000000', so light-mode mobile browsers will display a black status bar against a white page background.

Confidence Score: 5/5

Safe to merge — all findings are P2 style/quality suggestions with no correctness or data-integrity impact

All four flagged issues are minor style, dead-code, or cosmetic concerns. None break functionality, corrupt data, or affect production reliability. The core JSON-LD @graph refactor, sitemap improvements, blog UI refresh, and docs styling changes are correct and well-implemented.

apps/sim/lib/blog/seo.ts (dead export, hardcoded proficiencyLevel), apps/sim/lib/blog/schema.ts (unused frontmatter field), apps/docs/app/layout.tsx (themeColor regression)

Important Files Changed

Filename Overview
apps/sim/lib/blog/seo.ts Refactored JSON-LD to @graph pattern; dead buildBlogJsonLd export remains and proficiencyLevel hardcoded to 'Beginner' for all articles
apps/sim/lib/blog/schema.ts Added wordCount to BlogFrontmatterSchema but the field is computed from content and the frontmatter-parsed value is never used
apps/sim/lib/blog/registry.ts Added word count computation from MDX content with regex stripping of code blocks, imports, HTML, and markdown symbols
apps/docs/app/global.css Large-scale Fumadocs CSS variable overrides, sidebar/navbar layout refinements, and content component styling for docs UI refresh
apps/docs/components/docs-layout/page-footer.tsx New page footer component with previous/next navigation links and social icons (X, GitHub, Discord)
apps/docs/components/docs-layout/sidebar-components.tsx Refactored sidebar item/folder/separator components with updated design tokens and a custom SVG chevron
apps/sim/app/(landing)/blog/[slug]/page.tsx Blog post page UI refresh with rebuilt header layout and consolidated JSON-LD via @graph
apps/docs/app/layout.tsx Simplified themeColor to always '#000000', removing light/dark media-query variants; several icon sizes removed
apps/sim/app/sitemap.ts Added changeFrequency and priority to blog index and post sitemap entries
apps/sim/app/(landing)/blog/page.tsx Converted to dynamic generateMetadata with per-tag/page canonical URLs and CollectionPage JSON-LD

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Blog Post MDX File] -->|matter parse| B[Frontmatter data]
    A -->|matter parse| C[MDX content]
    B --> D[BlogFrontmatterSchema.parse]
    D --> E[fm: BlogFrontmatterSchema]
    C --> F[Word Count Computation\nregex strip + split]
    F --> G[wordCount: number]
    E --> H[results.push]
    G --> H
    H --> I[BlogMeta]
    I --> J[buildPostGraphJsonLd]
    J --> K[@graph JSON-LD]
    K --> L1[buildArticleJsonLd\nTechArticle]
    K --> L2[buildBreadcrumbJsonLd\nBreadcrumbList]
    K --> L3[buildFaqJsonLd\nFAQPage optional]
    I --> M[blog/page.tsx]
    M --> N[buildCollectionPageJsonLd\nCollectionPage]
    style L1 fill:#d4edda
    style L2 fill:#d4edda
    style L3 fill:#d4edda
    style N fill:#d4edda
Loading

Comments Outside Diff (1)

  1. apps/sim/lib/blog/seo.ts, line 173-181 (link)

    P2 Dead export buildBlogJsonLd

    buildBlogJsonLd is defined and exported here but is not imported or called anywhere in the codebase — buildCollectionPageJsonLd has replaced it on the blog index page. The unused export adds noise and could confuse future contributors.

Reviews (1): Last reviewed commit: "improvement(docs): ui/ux cleanup" | Re-trigger Greptile

datePublished: post.date,
dateModified: post.updated ?? post.date,
wordCount: post.wordCount,
proficiencyLevel: 'Beginner',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Hardcoded proficiencyLevel: 'Beginner'

Every TechArticle will emit proficiencyLevel: 'Beginner' regardless of actual content difficulty. Most Sim blog posts cover advanced topics (agent orchestration, LLM routing, etc.), so this will be inaccurate for the majority of posts and could mislead search engines.

Consider driving it from frontmatter (e.g. an optional proficiencyLevel field defaulting to 'Beginner') so individual posts can declare the correct level, or omit the field entirely.

)
.optional(),
canonical: z.string().url(),
wordCount: z.number().int().positive().optional(),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 wordCount in frontmatter schema is never consumed

wordCount is added to BlogFrontmatterSchema as an optional frontmatter field, but in registry.ts the word count is always computed from MDX content:

const wordCount = mdxContent.replace(...).split(...).filter(...).length

The fm.wordCount value parsed from frontmatter is never referenced — the computed variable is what gets pushed to results. This means a post author who sets wordCount in their YAML frontmatter would silently have it overwritten. If manual override is not intended, removing the field from the schema avoids the false impression that it is configurable via frontmatter.

Comment on lines 10 to 12
initialScale: 1,
themeColor: [
{ media: '(prefers-color-scheme: light)', color: '#ffffff' },
{ media: '(prefers-color-scheme: dark)', color: '#0c0c0c' },
],
themeColor: '#000000',
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 themeColor always black in light mode

The previous value used prefers-color-scheme media queries to set an appropriate theme colour for each mode:

// Before
themeColor: [
  { media: '(prefers-color-scheme: light)', color: '#ffffff' },
  { media: '(prefers-color-scheme: dark)', color: '#0c0c0c' },
],

The new single value '#000000' means mobile Chrome / Safari will render a black status bar on a white page in light mode — a visible contrast mismatch. Restoring the media-query array, or at minimum using a neutral value for light mode (e.g. '#ffffff'), would match the new white background.

…estion slots

- Add flex-col sm:flex-row and matching border classes to related posts
  nav for consistent mobile stacking with the main blog page
- Remove score > 0 filter in getRelatedPosts so it falls back to recent
  posts when there aren't enough tag matches
- Align description text color with main page cards
@emir-karabeg emir-karabeg merged commit ad100fa into staging Apr 7, 2026
11 checks passed
@emir-karabeg emir-karabeg deleted the improvement/docs branch April 7, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants